package com.hjh.netty.elect.util;

/**
 * 累加和校验工具类
 * @author pyz
 *
 */
public class CheckSumUtils {

	/**
	 * 进行累加和校验
	 * @param data
	 * @return 返回累加和校验后的字符串，大写
	 */
	public static String doChecksum(String data) {
		if (data == null || data.equals("")) {
			return "00";
		}
		try {
			int total = 0;
			int len = data.length();
			int num = 0;
			while (num < len) {
				String s = data.substring(num, num + 2);
//				System.out.println(s);
				total += Integer.parseInt(s, 16);
				num = num + 2;
			}
			/**
			 * 用256求余最大是255，即16进制的FF
			 */
			int mod = total % 256;
			String hex = Integer.toHexString(mod);
			len = hex.length();
			// 如果不够校验位的长度，补0,这里用的是两位校验
			if (len < 2) {
				hex = "0" + hex;
			}
			return hex.toUpperCase();
		}catch (Exception e) {
			return "00";
		}
	}
	
}
